//
// Created by LiuYou on 2021/5/12.
//

/**
 * @brief 函数模板
 *
 * template <template parameter list>
 * int func(...) {
 *      ...
 * }
 *
 * 模板参数列表: 表示在类或函数定义中用到的类型或值, 模板参数列表中也就是<>括起来的部分中的参数被称为是模板类型参数。
 * 模板类型参数可以用来指定返回类型或函数的参数类型, 以及在函数体内用来定义变量或者进行类型转换。
 *
 * 在模板中还可以定义非类型参数, 一个非类型参数表示一个值而非一个类型。
 *
 * 一个模板就是一个创建类或函数的蓝图或者说是公式, 在编译时获知类型, 编译器生成的版本通常被称为模板的实例(instantiation/instance)。
 *
 * 模板程序应该尽量减少对实参类型的要求。
 *
 * 模板编译: 模板的头文件通常既包括声明也包括定义。函数模板和类模板成员函数的定义通常放在头文件中。
 *
 * 模板包含两种名字(类型)
 *      不依赖于模板参数列表中的模板参数的名字(类型)
 *      依赖于模板参数列表中的模板参数的名字(类型)
 *
 * 与函数模板不同, 编译器不能为类模板推断模板参数类型, 所以类模板必须提供显式模板实参这些额外信息。
 *
 * 一个类模板的每个实例都形成一个独立的类。
 *
 * 在编写一个类模板或者函数模板时, 即在模板作用域中可以引用其它模板类型(其实就是可以使用其它类模板或函数模板设计当前这个正在编写的类模板或者函数模板)。
 *
 *
 *
 * @return
 */
int main() {


    return 0;
}